
#include "material.h"
#include <QDebug>
#include <QFile>
#include <QFontDatabase>

namespace picto {

static const QHash<QString, int> MaterialHash = {
	{"ma_3d_rotation", material::ma_3d_rotation }, 
	{"ac_unit", material::ac_unit }, 
	{"access_alarm", material::access_alarm }, 
	{"access_alarms", material::access_alarms }, 
	{"access_time", material::access_time }, 
	{"accessibility", material::accessibility }, 
	{"accessible", material::accessible }, 
	{"account_balance", material::account_balance }, 
	{"account_balance_wallet", material::account_balance_wallet }, 
	{"account_box", material::account_box }, 
	{"account_circle", material::account_circle }, 
	{"adb", material::adb }, 
	{"add", material::add }, 
	{"add_a_photo", material::add_a_photo }, 
	{"add_alarm", material::add_alarm }, 
	{"add_alert", material::add_alert }, 
	{"add_box", material::add_box }, 
	{"add_circle", material::add_circle }, 
	{"add_circle_outline", material::add_circle_outline }, 
	{"add_location", material::add_location }, 
	{"add_shopping_cart", material::add_shopping_cart }, 
	{"add_to_photos", material::add_to_photos }, 
	{"add_to_queue", material::add_to_queue }, 
	{"adjust", material::adjust }, 
	{"airline_seat_flat", material::airline_seat_flat }, 
	{"airline_seat_flat_angled", material::airline_seat_flat_angled }, 
	{"airline_seat_individual_suite", material::airline_seat_individual_suite }, 
	{"airline_seat_legroom_extra", material::airline_seat_legroom_extra }, 
	{"airline_seat_legroom_normal", material::airline_seat_legroom_normal }, 
	{"airline_seat_legroom_reduced", material::airline_seat_legroom_reduced }, 
	{"airline_seat_recline_extra", material::airline_seat_recline_extra }, 
	{"airline_seat_recline_normal", material::airline_seat_recline_normal }, 
	{"airplanemode_active", material::airplanemode_active }, 
	{"airplanemode_inactive", material::airplanemode_inactive }, 
	{"airplay", material::airplay }, 
	{"airport_shuttle", material::airport_shuttle }, 
	{"alarm", material::alarm }, 
	{"alarm_add", material::alarm_add }, 
	{"alarm_off", material::alarm_off }, 
	{"alarm_on", material::alarm_on }, 
	{"album", material::album }, 
	{"all_inclusive", material::all_inclusive }, 
	{"all_out", material::all_out }, 
	{"android", material::android }, 
	{"announcement", material::announcement }, 
	{"apps", material::apps }, 
	{"archive", material::archive }, 
	{"arrow_back", material::arrow_back }, 
	{"arrow_downward", material::arrow_downward }, 
	{"arrow_drop_down", material::arrow_drop_down }, 
	{"arrow_drop_down_circle", material::arrow_drop_down_circle }, 
	{"arrow_drop_up", material::arrow_drop_up }, 
	{"arrow_forward", material::arrow_forward }, 
	{"arrow_upward", material::arrow_upward }, 
	{"art_track", material::art_track }, 
	{"aspect_ratio", material::aspect_ratio }, 
	{"assessment", material::assessment }, 
	{"assignment", material::assignment }, 
	{"assignment_ind", material::assignment_ind }, 
	{"assignment_late", material::assignment_late }, 
	{"assignment_return", material::assignment_return }, 
	{"assignment_returned", material::assignment_returned }, 
	{"assignment_turned_in", material::assignment_turned_in }, 
	{"assistant", material::assistant }, 
	{"assistant_photo", material::assistant_photo }, 
	{"attach_file", material::attach_file }, 
	{"attach_money", material::attach_money }, 
	{"attachment", material::attachment }, 
	{"audiotrack", material::audiotrack }, 
	{"autorenew", material::autorenew }, 
	{"av_timer", material::av_timer }, 
	{"backspace", material::backspace }, 
	{"backup", material::backup }, 
	{"battery_alert", material::battery_alert }, 
	{"battery_charging_full", material::battery_charging_full }, 
	{"battery_full", material::battery_full }, 
	{"battery_std", material::battery_std }, 
	{"battery_unknown", material::battery_unknown }, 
	{"beach_access", material::beach_access }, 
	{"beenhere", material::beenhere }, 
	{"block", material::block }, 
	{"bluetooth", material::bluetooth }, 
	{"bluetooth_audio", material::bluetooth_audio }, 
	{"bluetooth_connected", material::bluetooth_connected }, 
	{"bluetooth_disabled", material::bluetooth_disabled }, 
	{"bluetooth_searching", material::bluetooth_searching }, 
	{"blur_circular", material::blur_circular }, 
	{"blur_linear", material::blur_linear }, 
	{"blur_off", material::blur_off }, 
	{"blur_on", material::blur_on }, 
	{"book", material::book }, 
	{"bookmark", material::bookmark }, 
	{"bookmark_border", material::bookmark_border }, 
	{"border_all", material::border_all }, 
	{"border_bottom", material::border_bottom }, 
	{"border_clear", material::border_clear }, 
	{"border_color", material::border_color }, 
	{"border_horizontal", material::border_horizontal }, 
	{"border_inner", material::border_inner }, 
	{"border_left", material::border_left }, 
	{"border_outer", material::border_outer }, 
	{"border_right", material::border_right }, 
	{"border_style", material::border_style }, 
	{"border_top", material::border_top }, 
	{"border_vertical", material::border_vertical }, 
	{"branding_watermark", material::branding_watermark }, 
	{"brightness_1", material::brightness_1 }, 
	{"brightness_2", material::brightness_2 }, 
	{"brightness_3", material::brightness_3 }, 
	{"brightness_4", material::brightness_4 }, 
	{"brightness_5", material::brightness_5 }, 
	{"brightness_6", material::brightness_6 }, 
	{"brightness_7", material::brightness_7 }, 
	{"brightness_auto", material::brightness_auto }, 
	{"brightness_high", material::brightness_high }, 
	{"brightness_low", material::brightness_low }, 
	{"brightness_medium", material::brightness_medium }, 
	{"broken_image", material::broken_image }, 
	{"brush", material::brush }, 
	{"bubble_chart", material::bubble_chart }, 
	{"bug_report", material::bug_report }, 
	{"build", material::build }, 
	{"burst_mode", material::burst_mode }, 
	{"business", material::business }, 
	{"business_center", material::business_center }, 
	{"cached", material::cached }, 
	{"cake", material::cake }, 
	{"call", material::call }, 
	{"call_end", material::call_end }, 
	{"call_made", material::call_made }, 
	{"call_merge", material::call_merge }, 
	{"call_missed", material::call_missed }, 
	{"call_missed_outgoing", material::call_missed_outgoing }, 
	{"call_received", material::call_received }, 
	{"call_split", material::call_split }, 
	{"call_to_action", material::call_to_action }, 
	{"camera", material::camera }, 
	{"camera_alt", material::camera_alt }, 
	{"camera_enhance", material::camera_enhance }, 
	{"camera_front", material::camera_front }, 
	{"camera_rear", material::camera_rear }, 
	{"camera_roll", material::camera_roll }, 
	{"cancel", material::cancel }, 
	{"card_giftcard", material::card_giftcard }, 
	{"card_membership", material::card_membership }, 
	{"card_travel", material::card_travel }, 
	{"casino", material::casino }, 
	{"cast", material::cast }, 
	{"cast_connected", material::cast_connected }, 
	{"center_focus_strong", material::center_focus_strong }, 
	{"center_focus_weak", material::center_focus_weak }, 
	{"change_history", material::change_history }, 
	{"chat", material::chat }, 
	{"chat_bubble", material::chat_bubble }, 
	{"chat_bubble_outline", material::chat_bubble_outline }, 
	{"check", material::check }, 
	{"check_box", material::check_box }, 
	{"check_box_outline_blank", material::check_box_outline_blank }, 
	{"check_circle", material::check_circle }, 
	{"chevron_left", material::chevron_left }, 
	{"chevron_right", material::chevron_right }, 
	{"child_care", material::child_care }, 
	{"child_friendly", material::child_friendly }, 
	{"chrome_reader_mode", material::chrome_reader_mode }, 
	{"ma_class", material::ma_class }, 
	{"clear", material::clear }, 
	{"clear_all", material::clear_all }, 
	{"close", material::close }, 
	{"closed_caption", material::closed_caption }, 
	{"cloud", material::cloud }, 
	{"cloud_circle", material::cloud_circle }, 
	{"cloud_done", material::cloud_done }, 
	{"cloud_download", material::cloud_download }, 
	{"cloud_off", material::cloud_off }, 
	{"cloud_queue", material::cloud_queue }, 
	{"cloud_upload", material::cloud_upload }, 
	{"ma_code", material::ma_code }, 
	{"collections", material::collections }, 
	{"collections_bookmark", material::collections_bookmark }, 
	{"color_lens", material::color_lens }, 
	{"colorize", material::colorize }, 
	{"comment", material::comment }, 
	{"compare", material::compare }, 
	{"compare_arrows", material::compare_arrows }, 
	{"computer", material::computer }, 
	{"confirmation_number", material::confirmation_number }, 
	{"contact_mail", material::contact_mail }, 
	{"contact_phone", material::contact_phone }, 
	{"contacts", material::contacts }, 
	{"content_copy", material::content_copy }, 
	{"content_cut", material::content_cut }, 
	{"content_paste", material::content_paste }, 
	{"control_point", material::control_point }, 
	{"control_point_duplicate", material::control_point_duplicate }, 
	{"copyright", material::copyright }, 
	{"create", material::create }, 
	{"create_new_folder", material::create_new_folder }, 
	{"credit_card", material::credit_card }, 
	{"crop", material::crop }, 
	{"crop_16_9", material::crop_16_9 }, 
	{"crop_3_2", material::crop_3_2 }, 
	{"crop_5_4", material::crop_5_4 }, 
	{"crop_7_5", material::crop_7_5 }, 
	{"crop_din", material::crop_din }, 
	{"crop_free", material::crop_free }, 
	{"crop_landscape", material::crop_landscape }, 
	{"crop_original", material::crop_original }, 
	{"crop_portrait", material::crop_portrait }, 
	{"crop_rotate", material::crop_rotate }, 
	{"crop_square", material::crop_square }, 
	{"dashboard", material::dashboard }, 
	{"data_usage", material::data_usage }, 
	{"date_range", material::date_range }, 
	{"dehaze", material::dehaze }, 
	{"ma_delete", material::ma_delete }, 
	{"delete_forever", material::delete_forever }, 
	{"delete_sweep", material::delete_sweep }, 
	{"description", material::description }, 
	{"desktop_mac", material::desktop_mac }, 
	{"desktop_windows", material::desktop_windows }, 
	{"details", material::details }, 
	{"developer_board", material::developer_board }, 
	{"developer_mode", material::developer_mode }, 
	{"device_hub", material::device_hub }, 
	{"devices", material::devices }, 
	{"devices_other", material::devices_other }, 
	{"dialer_sip", material::dialer_sip }, 
	{"dialpad", material::dialpad }, 
	{"directions", material::directions }, 
	{"directions_bike", material::directions_bike }, 
	{"directions_boat", material::directions_boat }, 
	{"directions_bus", material::directions_bus }, 
	{"directions_car", material::directions_car }, 
	{"directions_railway", material::directions_railway }, 
	{"directions_run", material::directions_run }, 
	{"directions_subway", material::directions_subway }, 
	{"directions_transit", material::directions_transit }, 
	{"directions_walk", material::directions_walk }, 
	{"disc_full", material::disc_full }, 
	{"dns", material::dns }, 
	{"do_not_disturb", material::do_not_disturb }, 
	{"do_not_disturb_alt", material::do_not_disturb_alt }, 
	{"do_not_disturb_off", material::do_not_disturb_off }, 
	{"do_not_disturb_on", material::do_not_disturb_on }, 
	{"dock", material::dock }, 
	{"domain", material::domain }, 
	{"done", material::done }, 
	{"done_all", material::done_all }, 
	{"donut_large", material::donut_large }, 
	{"donut_small", material::donut_small }, 
	{"drafts", material::drafts }, 
	{"drag_handle", material::drag_handle }, 
	{"drive_eta", material::drive_eta }, 
	{"dvr", material::dvr }, 
	{"edit", material::edit }, 
	{"edit_location", material::edit_location }, 
	{"eject", material::eject }, 
	{"email", material::email }, 
	{"enhanced_encryption", material::enhanced_encryption }, 
	{"equalizer", material::equalizer }, 
	{"error", material::error }, 
	{"error_outline", material::error_outline }, 
	{"euro_symbol", material::euro_symbol }, 
	{"ev_station", material::ev_station }, 
	{"event", material::event }, 
	{"event_available", material::event_available }, 
	{"event_busy", material::event_busy }, 
	{"event_note", material::event_note }, 
	{"event_seat", material::event_seat }, 
	{"exit_to_app", material::exit_to_app }, 
	{"expand_less", material::expand_less }, 
	{"expand_more", material::expand_more }, 
	{"ma_explicit", material::ma_explicit }, 
	{"explore", material::explore }, 
	{"exposure", material::exposure }, 
	{"exposure_neg_1", material::exposure_neg_1 }, 
	{"exposure_neg_2", material::exposure_neg_2 }, 
	{"exposure_plus_1", material::exposure_plus_1 }, 
	{"exposure_plus_2", material::exposure_plus_2 }, 
	{"exposure_zero", material::exposure_zero }, 
	{"extension", material::extension }, 
	{"face", material::face }, 
	{"fast_forward", material::fast_forward }, 
	{"fast_rewind", material::fast_rewind }, 
	{"favorite", material::favorite }, 
	{"favorite_border", material::favorite_border }, 
	{"featured_play_list", material::featured_play_list }, 
	{"featured_video", material::featured_video }, 
	{"feedback", material::feedback }, 
	{"fiber_dvr", material::fiber_dvr }, 
	{"fiber_manual_record", material::fiber_manual_record }, 
	{"fiber_new", material::fiber_new }, 
	{"fiber_pin", material::fiber_pin }, 
	{"fiber_smart_record", material::fiber_smart_record }, 
	{"file_download", material::file_download }, 
	{"file_upload", material::file_upload }, 
	{"filter", material::filter }, 
	{"filter_1", material::filter_1 }, 
	{"filter_2", material::filter_2 }, 
	{"filter_3", material::filter_3 }, 
	{"filter_4", material::filter_4 }, 
	{"filter_5", material::filter_5 }, 
	{"filter_6", material::filter_6 }, 
	{"filter_7", material::filter_7 }, 
	{"filter_8", material::filter_8 }, 
	{"filter_9", material::filter_9 }, 
	{"filter_9_plus", material::filter_9_plus }, 
	{"filter_b_and_w", material::filter_b_and_w }, 
	{"filter_center_focus", material::filter_center_focus }, 
	{"filter_drama", material::filter_drama }, 
	{"filter_frames", material::filter_frames }, 
	{"filter_hdr", material::filter_hdr }, 
	{"filter_list", material::filter_list }, 
	{"filter_none", material::filter_none }, 
	{"filter_tilt_shift", material::filter_tilt_shift }, 
	{"filter_vintage", material::filter_vintage }, 
	{"find_in_page", material::find_in_page }, 
	{"find_replace", material::find_replace }, 
	{"fingerprint", material::fingerprint }, 
	{"first_page", material::first_page }, 
	{"fitness_center", material::fitness_center }, 
	{"flag", material::flag }, 
	{"flare", material::flare }, 
	{"flash_auto", material::flash_auto }, 
	{"flash_off", material::flash_off }, 
	{"flash_on", material::flash_on }, 
	{"flight", material::flight }, 
	{"flight_land", material::flight_land }, 
	{"flight_takeoff", material::flight_takeoff }, 
	{"flip", material::flip }, 
	{"flip_to_back", material::flip_to_back }, 
	{"flip_to_front", material::flip_to_front }, 
	{"folder", material::folder }, 
	{"folder_open", material::folder_open }, 
	{"folder_shared", material::folder_shared }, 
	{"folder_special", material::folder_special }, 
	{"font_download", material::font_download }, 
	{"format_align_center", material::format_align_center }, 
	{"format_align_justify", material::format_align_justify }, 
	{"format_align_left", material::format_align_left }, 
	{"format_align_right", material::format_align_right }, 
	{"format_bold", material::format_bold }, 
	{"format_clear", material::format_clear }, 
	{"format_color_fill", material::format_color_fill }, 
	{"format_color_reset", material::format_color_reset }, 
	{"format_color_text", material::format_color_text }, 
	{"format_indent_decrease", material::format_indent_decrease }, 
	{"format_indent_increase", material::format_indent_increase }, 
	{"format_italic", material::format_italic }, 
	{"format_line_spacing", material::format_line_spacing }, 
	{"format_list_bulleted", material::format_list_bulleted }, 
	{"format_list_numbered", material::format_list_numbered }, 
	{"format_paint", material::format_paint }, 
	{"format_quote", material::format_quote }, 
	{"format_shapes", material::format_shapes }, 
	{"format_size", material::format_size }, 
	{"format_strikethrough", material::format_strikethrough }, 
	{"format_textdirection_l_to_r", material::format_textdirection_l_to_r }, 
	{"format_textdirection_r_to_l", material::format_textdirection_r_to_l }, 
	{"format_underlined", material::format_underlined }, 
	{"forum", material::forum }, 
	{"forward", material::forward }, 
	{"forward_10", material::forward_10 }, 
	{"forward_30", material::forward_30 }, 
	{"forward_5", material::forward_5 }, 
	{"free_breakfast", material::free_breakfast }, 
	{"fullscreen", material::fullscreen }, 
	{"fullscreen_exit", material::fullscreen_exit }, 
	{"functions", material::functions }, 
	{"g_translate", material::g_translate }, 
	{"gamepad", material::gamepad }, 
	{"games", material::games }, 
	{"gavel", material::gavel }, 
	{"gesture", material::gesture }, 
	{"get_app", material::get_app }, 
	{"gif", material::gif }, 
	{"golf_course", material::golf_course }, 
	{"gps_fixed", material::gps_fixed }, 
	{"gps_not_fixed", material::gps_not_fixed }, 
	{"gps_off", material::gps_off }, 
	{"grade", material::grade }, 
	{"gradient", material::gradient }, 
	{"grain", material::grain }, 
	{"graphic_eq", material::graphic_eq }, 
	{"grid_off", material::grid_off }, 
	{"grid_on", material::grid_on }, 
	{"group", material::group }, 
	{"group_add", material::group_add }, 
	{"group_work", material::group_work }, 
	{"hd", material::hd }, 
	{"hdr_off", material::hdr_off }, 
	{"hdr_on", material::hdr_on }, 
	{"hdr_strong", material::hdr_strong }, 
	{"hdr_weak", material::hdr_weak }, 
	{"headset", material::headset }, 
	{"headset_mic", material::headset_mic }, 
	{"healing", material::healing }, 
	{"hearing", material::hearing }, 
	{"help", material::help }, 
	{"help_outline", material::help_outline }, 
	{"high_quality", material::high_quality }, 
	{"highlight", material::highlight }, 
	{"highlight_off", material::highlight_off }, 
	{"history", material::history }, 
	{"home", material::home }, 
	{"hot_tub", material::hot_tub }, 
	{"hotel", material::hotel }, 
	{"hourglass_empty", material::hourglass_empty }, 
	{"hourglass_full", material::hourglass_full }, 
	{"http", material::http }, 
	{"https", material::https }, 
	{"image", material::image }, 
	{"image_aspect_ratio", material::image_aspect_ratio }, 
	{"import_contacts", material::import_contacts }, 
	{"import_export", material::import_export }, 
	{"important_devices", material::important_devices }, 
	{"inbox", material::inbox }, 
	{"indeterminate_check_box", material::indeterminate_check_box }, 
	{"info", material::info }, 
	{"info_outline", material::info_outline }, 
	{"input", material::input }, 
	{"insert_chart", material::insert_chart }, 
	{"insert_comment", material::insert_comment }, 
	{"insert_drive_file", material::insert_drive_file }, 
	{"insert_emoticon", material::insert_emoticon }, 
	{"insert_invitation", material::insert_invitation }, 
	{"insert_link", material::insert_link }, 
	{"insert_photo", material::insert_photo }, 
	{"invert_colors", material::invert_colors }, 
	{"invert_colors_off", material::invert_colors_off }, 
	{"iso", material::iso }, 
	{"keyboard", material::keyboard }, 
	{"keyboard_arrow_down", material::keyboard_arrow_down }, 
	{"keyboard_arrow_left", material::keyboard_arrow_left }, 
	{"keyboard_arrow_right", material::keyboard_arrow_right }, 
	{"keyboard_arrow_up", material::keyboard_arrow_up }, 
	{"keyboard_backspace", material::keyboard_backspace }, 
	{"keyboard_capslock", material::keyboard_capslock }, 
	{"keyboard_hide", material::keyboard_hide }, 
	{"keyboard_return", material::keyboard_return }, 
	{"keyboard_tab", material::keyboard_tab }, 
	{"keyboard_voice", material::keyboard_voice }, 
	{"kitchen", material::kitchen }, 
	{"label", material::label }, 
	{"label_outline", material::label_outline }, 
	{"landscape", material::landscape }, 
	{"language", material::language }, 
	{"laptop", material::laptop }, 
	{"laptop_chromebook", material::laptop_chromebook }, 
	{"laptop_mac", material::laptop_mac }, 
	{"laptop_windows", material::laptop_windows }, 
	{"last_page", material::last_page }, 
	{"launch", material::launch }, 
	{"layers", material::layers }, 
	{"layers_clear", material::layers_clear }, 
	{"leak_add", material::leak_add }, 
	{"leak_remove", material::leak_remove }, 
	{"lens", material::lens }, 
	{"library_add", material::library_add }, 
	{"library_books", material::library_books }, 
	{"library_music", material::library_music }, 
	{"lightbulb_outline", material::lightbulb_outline }, 
	{"line_style", material::line_style }, 
	{"line_weight", material::line_weight }, 
	{"linear_scale", material::linear_scale }, 
	{"link", material::link }, 
	{"linked_camera", material::linked_camera }, 
	{"list", material::list }, 
	{"live_help", material::live_help }, 
	{"live_tv", material::live_tv }, 
	{"local_activity", material::local_activity }, 
	{"local_airport", material::local_airport }, 
	{"local_atm", material::local_atm }, 
	{"local_bar", material::local_bar }, 
	{"local_cafe", material::local_cafe }, 
	{"local_car_wash", material::local_car_wash }, 
	{"local_convenience_store", material::local_convenience_store }, 
	{"local_dining", material::local_dining }, 
	{"local_drink", material::local_drink }, 
	{"local_florist", material::local_florist }, 
	{"local_gas_station", material::local_gas_station }, 
	{"local_grocery_store", material::local_grocery_store }, 
	{"local_hospital", material::local_hospital }, 
	{"local_hotel", material::local_hotel }, 
	{"local_laundry_service", material::local_laundry_service }, 
	{"local_library", material::local_library }, 
	{"local_mall", material::local_mall }, 
	{"local_movies", material::local_movies }, 
	{"local_offer", material::local_offer }, 
	{"local_parking", material::local_parking }, 
	{"local_pharmacy", material::local_pharmacy }, 
	{"local_phone", material::local_phone }, 
	{"local_pizza", material::local_pizza }, 
	{"local_play", material::local_play }, 
	{"local_post_office", material::local_post_office }, 
	{"local_printshop", material::local_printshop }, 
	{"local_see", material::local_see }, 
	{"local_shipping", material::local_shipping }, 
	{"local_taxi", material::local_taxi }, 
	{"location_city", material::location_city }, 
	{"location_disabled", material::location_disabled }, 
	{"location_off", material::location_off }, 
	{"location_on", material::location_on }, 
	{"location_searching", material::location_searching }, 
	{"lock", material::lock }, 
	{"lock_open", material::lock_open }, 
	{"lock_outline", material::lock_outline }, 
	{"looks", material::looks }, 
	{"looks_3", material::looks_3 }, 
	{"looks_4", material::looks_4 }, 
	{"looks_5", material::looks_5 }, 
	{"looks_6", material::looks_6 }, 
	{"looks_one", material::looks_one }, 
	{"looks_two", material::looks_two }, 
	{"loop", material::loop }, 
	{"loupe", material::loupe }, 
	{"low_priority", material::low_priority }, 
	{"loyalty", material::loyalty }, 
	{"mail", material::mail }, 
	{"mail_outline", material::mail_outline }, 
	{"map", material::map }, 
	{"markunread", material::markunread }, 
	{"markunread_mailbox", material::markunread_mailbox }, 
	{"memory", material::memory }, 
	{"menu", material::menu }, 
	{"merge_type", material::merge_type }, 
	{"message", material::message }, 
	{"mic", material::mic }, 
	{"mic_none", material::mic_none }, 
	{"mic_off", material::mic_off }, 
	{"mms", material::mms }, 
	{"mode_comment", material::mode_comment }, 
	{"mode_edit", material::mode_edit }, 
	{"monetization_on", material::monetization_on }, 
	{"money_off", material::money_off }, 
	{"monochrome_photos", material::monochrome_photos }, 
	{"mood", material::mood }, 
	{"mood_bad", material::mood_bad }, 
	{"more", material::more }, 
	{"more_horiz", material::more_horiz }, 
	{"more_vert", material::more_vert }, 
	{"motorcycle", material::motorcycle }, 
	{"mouse", material::mouse }, 
	{"move_to_inbox", material::move_to_inbox }, 
	{"movie", material::movie }, 
	{"movie_creation", material::movie_creation }, 
	{"movie_filter", material::movie_filter }, 
	{"multiline_chart", material::multiline_chart }, 
	{"music_note", material::music_note }, 
	{"music_video", material::music_video }, 
	{"my_location", material::my_location }, 
	{"nature", material::nature }, 
	{"nature_people", material::nature_people }, 
	{"navigate_before", material::navigate_before }, 
	{"navigate_next", material::navigate_next }, 
	{"navigation", material::navigation }, 
	{"near_me", material::near_me }, 
	{"network_cell", material::network_cell }, 
	{"network_check", material::network_check }, 
	{"network_locked", material::network_locked }, 
	{"network_wifi", material::network_wifi }, 
	{"new_releases", material::new_releases }, 
	{"next_week", material::next_week }, 
	{"nfc", material::nfc }, 
	{"no_encryption", material::no_encryption }, 
	{"no_sim", material::no_sim }, 
	{"not_interested", material::not_interested }, 
	{"note", material::note }, 
	{"note_add", material::note_add }, 
	{"notifications", material::notifications }, 
	{"notifications_active", material::notifications_active }, 
	{"notifications_none", material::notifications_none }, 
	{"notifications_off", material::notifications_off }, 
	{"notifications_paused", material::notifications_paused }, 
	{"offline_pin", material::offline_pin }, 
	{"ondemand_video", material::ondemand_video }, 
	{"opacity", material::opacity }, 
	{"open_in_browser", material::open_in_browser }, 
	{"open_in_new", material::open_in_new }, 
	{"open_with", material::open_with }, 
	{"pages", material::pages }, 
	{"pageview", material::pageview }, 
	{"palette", material::palette }, 
	{"pan_tool", material::pan_tool }, 
	{"panorama", material::panorama }, 
	{"panorama_fish_eye", material::panorama_fish_eye }, 
	{"panorama_horizontal", material::panorama_horizontal }, 
	{"panorama_vertical", material::panorama_vertical }, 
	{"panorama_wide_angle", material::panorama_wide_angle }, 
	{"party_mode", material::party_mode }, 
	{"pause", material::pause }, 
	{"pause_circle_filled", material::pause_circle_filled }, 
	{"pause_circle_outline", material::pause_circle_outline }, 
	{"payment", material::payment }, 
	{"people", material::people }, 
	{"people_outline", material::people_outline }, 
	{"perm_camera_mic", material::perm_camera_mic }, 
	{"perm_contact_calendar", material::perm_contact_calendar }, 
	{"perm_data_setting", material::perm_data_setting }, 
	{"perm_device_information", material::perm_device_information }, 
	{"perm_identity", material::perm_identity }, 
	{"perm_media", material::perm_media }, 
	{"perm_phone_msg", material::perm_phone_msg }, 
	{"perm_scan_wifi", material::perm_scan_wifi }, 
	{"person", material::person }, 
	{"person_add", material::person_add }, 
	{"person_outline", material::person_outline }, 
	{"person_pin", material::person_pin }, 
	{"person_pin_circle", material::person_pin_circle }, 
	{"personal_video", material::personal_video }, 
	{"pets", material::pets }, 
	{"phone", material::phone }, 
	{"phone_android", material::phone_android }, 
	{"phone_bluetooth_speaker", material::phone_bluetooth_speaker }, 
	{"phone_forwarded", material::phone_forwarded }, 
	{"phone_in_talk", material::phone_in_talk }, 
	{"phone_iphone", material::phone_iphone }, 
	{"phone_locked", material::phone_locked }, 
	{"phone_missed", material::phone_missed }, 
	{"phone_paused", material::phone_paused }, 
	{"phonelink", material::phonelink }, 
	{"phonelink_erase", material::phonelink_erase }, 
	{"phonelink_lock", material::phonelink_lock }, 
	{"phonelink_off", material::phonelink_off }, 
	{"phonelink_ring", material::phonelink_ring }, 
	{"phonelink_setup", material::phonelink_setup }, 
	{"photo", material::photo }, 
	{"photo_album", material::photo_album }, 
	{"photo_camera", material::photo_camera }, 
	{"photo_filter", material::photo_filter }, 
	{"photo_library", material::photo_library }, 
	{"photo_size_select_actual", material::photo_size_select_actual }, 
	{"photo_size_select_large", material::photo_size_select_large }, 
	{"photo_size_select_small", material::photo_size_select_small }, 
	{"picture_as_pdf", material::picture_as_pdf }, 
	{"picture_in_picture", material::picture_in_picture }, 
	{"picture_in_picture_alt", material::picture_in_picture_alt }, 
	{"pie_chart", material::pie_chart }, 
	{"pie_chart_outlined", material::pie_chart_outlined }, 
	{"pin_drop", material::pin_drop }, 
	{"place", material::place }, 
	{"play_arrow", material::play_arrow }, 
	{"play_circle_filled", material::play_circle_filled }, 
	{"play_circle_outline", material::play_circle_outline }, 
	{"play_for_work", material::play_for_work }, 
	{"playlist_add", material::playlist_add }, 
	{"playlist_add_check", material::playlist_add_check }, 
	{"playlist_play", material::playlist_play }, 
	{"plus_one", material::plus_one }, 
	{"poll", material::poll }, 
	{"polymer", material::polymer }, 
	{"pool", material::pool }, 
	{"portable_wifi_off", material::portable_wifi_off }, 
	{"portrait", material::portrait }, 
	{"power", material::power }, 
	{"power_input", material::power_input }, 
	{"power_settings_new", material::power_settings_new }, 
	{"pregnant_woman", material::pregnant_woman }, 
	{"present_to_all", material::present_to_all }, 
	{"ma_print", material::ma_print }, 
	{"priority_high", material::priority_high }, 
	{"ma_public", material::ma_public }, 
	{"publish", material::publish }, 
	{"query_builder", material::query_builder }, 
	{"question_answer", material::question_answer }, 
	{"queue", material::queue }, 
	{"queue_music", material::queue_music }, 
	{"queue_play_next", material::queue_play_next }, 
	{"radio", material::radio }, 
	{"radio_button_checked", material::radio_button_checked }, 
	{"radio_button_unchecked", material::radio_button_unchecked }, 
	{"rate_review", material::rate_review }, 
	{"receipt", material::receipt }, 
	{"recent_actors", material::recent_actors }, 
	{"record_voice_over", material::record_voice_over }, 
	{"redeem", material::redeem }, 
	{"redo", material::redo }, 
	{"refresh", material::refresh }, 
	{"remove", material::remove }, 
	{"remove_circle", material::remove_circle }, 
	{"remove_circle_outline", material::remove_circle_outline }, 
	{"remove_from_queue", material::remove_from_queue }, 
	{"remove_red_eye", material::remove_red_eye }, 
	{"remove_shopping_cart", material::remove_shopping_cart }, 
	{"reorder", material::reorder }, 
	{"repeat", material::repeat }, 
	{"repeat_one", material::repeat_one }, 
	{"replay", material::replay }, 
	{"replay_10", material::replay_10 }, 
	{"replay_30", material::replay_30 }, 
	{"replay_5", material::replay_5 }, 
	{"reply", material::reply }, 
	{"reply_all", material::reply_all }, 
	{"report", material::report }, 
	{"report_problem", material::report_problem }, 
	{"restaurant", material::restaurant }, 
	{"restaurant_menu", material::restaurant_menu }, 
	{"restore", material::restore }, 
	{"restore_page", material::restore_page }, 
	{"ring_volume", material::ring_volume }, 
	{"room", material::room }, 
	{"room_service", material::room_service }, 
	{"rotate_90_degrees_ccw", material::rotate_90_degrees_ccw }, 
	{"rotate_left", material::rotate_left }, 
	{"rotate_right", material::rotate_right }, 
	{"rounded_corner", material::rounded_corner }, 
	{"router", material::router }, 
	{"rowing", material::rowing }, 
	{"rss_feed", material::rss_feed }, 
	{"rv_hookup", material::rv_hookup }, 
	{"satellite", material::satellite }, 
	{"save", material::save }, 
	{"scanner", material::scanner }, 
	{"schedule", material::schedule }, 
	{"school", material::school }, 
	{"screen_lock_landscape", material::screen_lock_landscape }, 
	{"screen_lock_portrait", material::screen_lock_portrait }, 
	{"screen_lock_rotation", material::screen_lock_rotation }, 
	{"screen_rotation", material::screen_rotation }, 
	{"screen_share", material::screen_share }, 
	{"sd_card", material::sd_card }, 
	{"sd_storage", material::sd_storage }, 
	{"search", material::search }, 
	{"security", material::security }, 
	{"select_all", material::select_all }, 
	{"send", material::send }, 
	{"sentiment_dissatisfied", material::sentiment_dissatisfied }, 
	{"sentiment_neutral", material::sentiment_neutral }, 
	{"sentiment_satisfied", material::sentiment_satisfied }, 
	{"sentiment_very_dissatisfied", material::sentiment_very_dissatisfied }, 
	{"sentiment_very_satisfied", material::sentiment_very_satisfied }, 
	{"settings", material::settings }, 
	{"settings_applications", material::settings_applications }, 
	{"settings_backup_restore", material::settings_backup_restore }, 
	{"settings_bluetooth", material::settings_bluetooth }, 
	{"settings_brightness", material::settings_brightness }, 
	{"settings_cell", material::settings_cell }, 
	{"settings_ethernet", material::settings_ethernet }, 
	{"settings_input_antenna", material::settings_input_antenna }, 
	{"settings_input_component", material::settings_input_component }, 
	{"settings_input_composite", material::settings_input_composite }, 
	{"settings_input_hdmi", material::settings_input_hdmi }, 
	{"settings_input_svideo", material::settings_input_svideo }, 
	{"settings_overscan", material::settings_overscan }, 
	{"settings_phone", material::settings_phone }, 
	{"settings_power", material::settings_power }, 
	{"settings_remote", material::settings_remote }, 
	{"settings_system_daydream", material::settings_system_daydream }, 
	{"settings_voice", material::settings_voice }, 
	{"share", material::share }, 
	{"shop", material::shop }, 
	{"shop_two", material::shop_two }, 
	{"shopping_basket", material::shopping_basket }, 
	{"shopping_cart", material::shopping_cart }, 
	{"short_text", material::short_text }, 
	{"show_chart", material::show_chart }, 
	{"shuffle", material::shuffle }, 
	{"signal_cellular_4_bar", material::signal_cellular_4_bar }, 
	{"signal_cellular_connected_no_internet_4_bar", material::signal_cellular_connected_no_internet_4_bar }, 
	{"signal_cellular_no_sim", material::signal_cellular_no_sim }, 
	{"signal_cellular_null", material::signal_cellular_null }, 
	{"signal_cellular_off", material::signal_cellular_off }, 
	{"signal_wifi_4_bar", material::signal_wifi_4_bar }, 
	{"signal_wifi_4_bar_lock", material::signal_wifi_4_bar_lock }, 
	{"signal_wifi_off", material::signal_wifi_off }, 
	{"sim_card", material::sim_card }, 
	{"sim_card_alert", material::sim_card_alert }, 
	{"skip_next", material::skip_next }, 
	{"skip_previous", material::skip_previous }, 
	{"slideshow", material::slideshow }, 
	{"slow_motion_video", material::slow_motion_video }, 
	{"smartphone", material::smartphone }, 
	{"smoke_free", material::smoke_free }, 
	{"smoking_rooms", material::smoking_rooms }, 
	{"sms", material::sms }, 
	{"sms_failed", material::sms_failed }, 
	{"snooze", material::snooze }, 
	{"sort", material::sort }, 
	{"sort_by_alpha", material::sort_by_alpha }, 
	{"spa", material::spa }, 
	{"space_bar", material::space_bar }, 
	{"speaker", material::speaker }, 
	{"speaker_group", material::speaker_group }, 
	{"speaker_notes", material::speaker_notes }, 
	{"speaker_notes_off", material::speaker_notes_off }, 
	{"speaker_phone", material::speaker_phone }, 
	{"spellcheck", material::spellcheck }, 
	{"star", material::star }, 
	{"star_border", material::star_border }, 
	{"star_half", material::star_half }, 
	{"stars", material::stars }, 
	{"stay_current_landscape", material::stay_current_landscape }, 
	{"stay_current_portrait", material::stay_current_portrait }, 
	{"stay_primary_landscape", material::stay_primary_landscape }, 
	{"stay_primary_portrait", material::stay_primary_portrait }, 
	{"stop", material::stop }, 
	{"stop_screen_share", material::stop_screen_share }, 
	{"storage", material::storage }, 
	{"store", material::store }, 
	{"store_mall_directory", material::store_mall_directory }, 
	{"straighten", material::straighten }, 
	{"streetview", material::streetview }, 
	{"strikethrough_s", material::strikethrough_s }, 
	{"style", material::style }, 
	{"subdirectory_arrow_left", material::subdirectory_arrow_left }, 
	{"subdirectory_arrow_right", material::subdirectory_arrow_right }, 
	{"subject", material::subject }, 
	{"subscriptions", material::subscriptions }, 
	{"subtitles", material::subtitles }, 
	{"subway", material::subway }, 
	{"supervisor_account", material::supervisor_account }, 
	{"surround_sound", material::surround_sound }, 
	{"swap_calls", material::swap_calls }, 
	{"swap_horiz", material::swap_horiz }, 
	{"swap_vert", material::swap_vert }, 
	{"swap_vertical_circle", material::swap_vertical_circle }, 
	{"switch_camera", material::switch_camera }, 
	{"switch_video", material::switch_video }, 
	{"sync", material::sync }, 
	{"sync_disabled", material::sync_disabled }, 
	{"sync_problem", material::sync_problem }, 
	{"system_update", material::system_update }, 
	{"system_update_alt", material::system_update_alt }, 
	{"tab", material::tab }, 
	{"tab_unselected", material::tab_unselected }, 
	{"tablet", material::tablet }, 
	{"tablet_android", material::tablet_android }, 
	{"tablet_mac", material::tablet_mac }, 
	{"tag_faces", material::tag_faces }, 
	{"tap_and_play", material::tap_and_play }, 
	{"terrain", material::terrain }, 
	{"text_fields", material::text_fields }, 
	{"text_format", material::text_format }, 
	{"textsms", material::textsms }, 
	{"texture", material::texture }, 
	{"theaters", material::theaters }, 
	{"thumb_down", material::thumb_down }, 
	{"thumb_up", material::thumb_up }, 
	{"thumbs_up_down", material::thumbs_up_down }, 
	{"time_to_leave", material::time_to_leave }, 
	{"timelapse", material::timelapse }, 
	{"timeline", material::timeline }, 
	{"timer", material::timer }, 
	{"timer_10", material::timer_10 }, 
	{"timer_3", material::timer_3 }, 
	{"timer_off", material::timer_off }, 
	{"title", material::title }, 
	{"toc", material::toc }, 
	{"today", material::today }, 
	{"toll", material::toll }, 
	{"tonality", material::tonality }, 
	{"touch_app", material::touch_app }, 
	{"toys", material::toys }, 
	{"track_changes", material::track_changes }, 
	{"traffic", material::traffic }, 
	{"train", material::train }, 
	{"tram", material::tram }, 
	{"transfer_within_a_station", material::transfer_within_a_station }, 
	{"transform", material::transform }, 
	{"translate", material::translate }, 
	{"trending_down", material::trending_down }, 
	{"trending_flat", material::trending_flat }, 
	{"trending_up", material::trending_up }, 
	{"tune", material::tune }, 
	{"turned_in", material::turned_in }, 
	{"turned_in_not", material::turned_in_not }, 
	{"tv", material::tv }, 
	{"unarchive", material::unarchive }, 
	{"undo", material::undo }, 
	{"unfold_less", material::unfold_less }, 
	{"unfold_more", material::unfold_more }, 
	{"update", material::update }, 
	{"usb", material::usb }, 
	{"verified_user", material::verified_user }, 
	{"vertical_align_bottom", material::vertical_align_bottom }, 
	{"vertical_align_center", material::vertical_align_center }, 
	{"vertical_align_top", material::vertical_align_top }, 
	{"vibration", material::vibration }, 
	{"video_call", material::video_call }, 
	{"video_label", material::video_label }, 
	{"video_library", material::video_library }, 
	{"videocam", material::videocam }, 
	{"videocam_off", material::videocam_off }, 
	{"videogame_asset", material::videogame_asset }, 
	{"view_agenda", material::view_agenda }, 
	{"view_array", material::view_array }, 
	{"view_carousel", material::view_carousel }, 
	{"view_column", material::view_column }, 
	{"view_comfy", material::view_comfy }, 
	{"view_compact", material::view_compact }, 
	{"view_day", material::view_day }, 
	{"view_headline", material::view_headline }, 
	{"view_list", material::view_list }, 
	{"view_module", material::view_module }, 
	{"view_quilt", material::view_quilt }, 
	{"view_stream", material::view_stream }, 
	{"view_week", material::view_week }, 
	{"vignette", material::vignette }, 
	{"visibility", material::visibility }, 
	{"visibility_off", material::visibility_off }, 
	{"voice_chat", material::voice_chat }, 
	{"voicemail", material::voicemail }, 
	{"volume_down", material::volume_down }, 
	{"volume_mute", material::volume_mute }, 
	{"volume_off", material::volume_off }, 
	{"volume_up", material::volume_up }, 
	{"vpn_key", material::vpn_key }, 
	{"vpn_lock", material::vpn_lock }, 
	{"wallpaper", material::wallpaper }, 
	{"warning", material::warning }, 
	{"watch", material::watch }, 
	{"watch_later", material::watch_later }, 
	{"wb_auto", material::wb_auto }, 
	{"wb_cloudy", material::wb_cloudy }, 
	{"wb_incandescent", material::wb_incandescent }, 
	{"wb_iridescent", material::wb_iridescent }, 
	{"wb_sunny", material::wb_sunny }, 
	{"wc", material::wc }, 
	{"web", material::web }, 
	{"web_asset", material::web_asset }, 
	{"weekend", material::weekend }, 
	{"whatshot", material::whatshot }, 
	{"widgets", material::widgets }, 
	{"wifi", material::wifi }, 
	{"wifi_lock", material::wifi_lock }, 
	{"wifi_tethering", material::wifi_tethering }, 
	{"work", material::work }, 
	{"wrap_text", material::wrap_text }, 
	{"youtube_searched_for", material::youtube_searched_for }, 
	{"zoom_in", material::zoom_in }, 
	{"zoom_out", material::zoom_out }, 
	{"zoom_out_map", material::zoom_out_map }, 
};

bool material::Provider::initialize() {

  static int fontId = -1;

  if (fontId < 0) {

    QFile res(":/fonts/material.ttf");

    if (!res.open(QIODevice::ReadOnly)) {
      qDebug() << "material.ttf font could not be read";
      return false;
    }

    QByteArray fontData(res.readAll());
    res.close();

    fontId = QFontDatabase::addApplicationFontFromData(fontData);
  }

  QStringList loadedFontFamilies =
      QFontDatabase::applicationFontFamilies(fontId);

  if (!loadedFontFamilies.empty()) {
    m_fontName = loadedFontFamilies.at(0);
  } else {
    qDebug() << "Font awesome font is empty?!" << "material.ttf";
    fontId = -1; // restore the font-awesome id
    return false;
  }


  return true;
}

QFont material::Provider::font(int size) {
	QFont font(m_fontName);
	font.setPixelSize(size);
	return font;
}

QString material::Provider::name(int code) {
	return MaterialHash.key(code);
}

int material::Provider::code(const QString &name) {
	return MaterialHash.value(name);
}

QString material::Provider::providerName() {
	return QString("material");
}

}